﻿/*
____
 L|ypps Web controls for ASP.NET

Copyright (c) 2009 Alessandro Zifiglio, http://www.Typps.com
EMail: alessandro@Typps.com

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
namespace Typps
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// Unicode character representation of all letters with casing and digits.
    /// http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/Contributions/Any/unicode.txt
    /// </summary>
    public class Unicode
    {
        #region Constructors

        public Unicode()
        {
        }

        #endregion Constructors

        #region Methods

        public static string AllLetters()
        {
            return LetterOther() + AllUpperCaseLetterRanges() +
                AllLowerCaseLetterRanges();
        }

        public static string AllLettersAndNumericRanges()
        {
            return AllUpperCaseLetterRanges() + AllLowerCaseLetterRanges() +
                LetterOther() + AllNumberDigitRanges();
        }

        public static string AllLowerCaseLetterRanges()
        {
            StringBuilder sb = new StringBuilder(87);
            sb.Append("\\u0061-\\u007a");
            sb.Append("\\u00aa");
            sb.Append("\\u00b5" + "\\u00ba");
            sb.Append("\\u00df-\\u00f6");
            sb.Append("\\u00f8-\\u00ff");
            sb.Append("\\u0101" + "\\u0103" + "\\u0105" + "\\u0107" + "\\u0109" + "\\u010b" + "\\u010d" + "\\u010f");
            sb.Append("\\u0111" + "\\u0113" + "\\u0115" + "\\u0117" + "\\u0119" + "\\u011b" + "\\u011d" + "\\u011f");
            sb.Append("\\u0121" + "\\u0123" + "\\u0125" + "\\u0127" + "\\u0129" + "\\u012b" + "\\u012d" + "\\u012f");
            sb.Append("\\u0131" + "\\u0133" + "\\u0135" + "\\u0137-\\u0138" + "\\u013a" + "\\u013c" + "\\u013e");
            sb.Append("\\u0140" + "\\u0142" + "\\u0144" + "\\u0146" + "\\u0148-\\u0149" + "\\u014b" + "\\u014d" + "\\u014f");
            sb.Append("\\u0151" + "\\u0153" + "\\u0155" + "\\u0157" + "\\u0159" + "\\u015b" + "\\u015d" + "\\u015f");
            sb.Append("\\u0161" + "\\u0163" + "\\u0165" + "\\u0167" + "\\u0169" + "\\u016b" + "\\u016d" + "\\u016f");
            sb.Append("\\u0171" + "\\u0173" + "\\u0175" + "\\u0177" + "\\u017a" + "\\u017c" + "\\u017e-\\u0180");
            sb.Append("\\u0183" + "\\u0185" + "\\u0188" + "\\u018c-\\u018d");
            sb.Append("\\u0192" + "\\u0195" + "\\u0199-\\u019b" + "\\u019e");
            sb.Append("\\u01a1" + "\\u01a3" + "\\u01a5" + "\\u01a8" + "\\u01aa-\\u01ab" + "\\u01ad");
            sb.Append("\\u01b0" + "\\u01b4" + "\\u01b6" + "\\u01b9-\\u01ba" + "\\u01bd-\\u01bf");
            sb.Append("\\u01c6" + "\\u01c9" + "\\u01cc" + "\\u01ce");
            sb.Append("\\u01d0" + "\\u01d2" + "\\u01d4" + "\\u01d6" + "\\u01d8" + "\\u01da" + "\\u01dc-\\u01dd" + "\\u01df");
            sb.Append("\\u01e1" + "\\u01e3" + "\\u01e5" + "\\u01e7" + "\\u01e9" + "\\u01eb" + "\\u01ed" + "\\u01ef-\\u01f0");
            sb.Append("\\u01f3" + "\\u01f5" + "\\u01f9" + "\\u01fb" + "\\u01fd" + "\\u01ff");
            sb.Append("\\u0201" + "\\u0203" + "\\u0205" + "\\u0207" + "\\u0209" + "\\u020b" + "\\u020d" + "\\u020f");
            sb.Append("\\u0211" + "\\u0213" + "\\u0215" + "\\u0217" + "\\u0219" + "\\u021b" + "\\u021d" + "\\u021f");
            sb.Append("\\u0221" + "\\u0223" + "\\u0225" + "\\u0227" + "\\u0229" + "\\u022b" + "\\u022d" + "\\u022f");
            sb.Append("\\u0231" + "\\u0233-\\u0236");
            sb.Append("\\u0250-\\u02af");
            sb.Append("\\u0390");
            sb.Append("\\u03ac-\\u03ce");
            sb.Append("\\u03d0-\\u03d1" + "\\u03d5-\\u03d7" + "\\u03d9" + "\\u03db" + "\\u03dd" + "\\u03df");
            sb.Append("\\u03e1" + "\\u03e3" + "\\u03e5" + "\\u03e7" + "\\u03e9" + "\\u03eb" + "\\u03ed" + "\\u03ef-\\u03f3");
            sb.Append("\\u03f5" + "\\u03f8" + "\\u03fb");
            sb.Append("\\u0430-\\u045f");
            sb.Append("\\u0461" + "\\u0463" + "\\u0465" + "\\u0467" + "\\u0469" + "\\u046b" + "\\u046d" + "\\u046f");
            sb.Append("\\u0471" + "\\u0473" + "\\u0475" + "\\u0477" + "\\u0479" + "\\u047b" + "\\u047d" + "\\u047f");
            sb.Append("\\u0481" + "\\u048b" + "\\u048d" + "\\u048f");
            sb.Append("\\u0491" + "\\u0493" + "\\u0495" + "\\u0497" + "\\u0499" + "\\u049b" + "\\u049d" + "\\u049f");
            sb.Append("\\u04a1" + "\\u04a3" + "\\u04a5" + "\\u04a7" + "\\u04a9" + "\\u04ab" + "\\u04ad" + "\\u04af");
            sb.Append("\\u04b1" + "\\u04b3" + "\\u04b5" + "\\u04b7" + "\\u04b9" + "\\u04bb" + "\\u04bd" + "\\u04bf");
            sb.Append("\\u04c2" + "\\u04c4" + "\\u04c6" + "\\u04c8" + "\\u04ca" + "\\u04cc" + "\\u04ce");
            sb.Append("\\u04d1" + "\\u04d3" + "\\u04d5" + "\\u04d7" + "\\u04d9" + "\\u04db" + "\\u04dd" + "\\u04df");
            sb.Append("\\u04e1" + "\\u04e3" + "\\u04e5" + "\\u04e7" + "\\u04e9" + "\\u04eb" + "\\u04ed" + "\\u04ef");
            sb.Append("\\u04f1" + "\\u04f3" + "\\u04f5" + "\\u04f9");
            sb.Append("\\u0501" + "\\u0503" + "\\u0505" + "\\u0507" + "\\u0509" + "\\u050b" + "\\u050d" + "\\u050f");
            sb.Append("\\u0561-\\u0587");
            sb.Append("\\u1d00-\\u1d2b");
            sb.Append("\\u1d62-\\u1d6b");
            sb.Append("\\u1e01" + "\\u1e03" + "\\u1e05" + "\\u1e07" + "\\u1e09" + "\\u1e0b" + "\\u1e0d" + "\\u1e0f");
            sb.Append("\\u1e11" + "\\u1e13" + "\\u1e15" + "\\u1e17" + "\\u1e19" + "\\u1e1b" + "\\u1e1d" + "\\u1e1f");
            sb.Append("\\u1e21" + "\\u1e23" + "\\u1e25" + "\\u1e27" + "\\u1e29" + "\\u1e2b" + "\\u1e2d" + "\\u1e2f");
            sb.Append("\\u1e31" + "\\u1e33" + "\\u1e35" + "\\u1e37" + "\\u1e39" + "\\u1e3b" + "\\u1e3d" + "\\u1e3f");
            sb.Append("\\u1e41" + "\\u1e43" + "\\u1e45" + "\\u1e47" + "\\u1e49" + "\\u1e4b" + "\\u1e4d" + "\\u1e4f");
            sb.Append("\\u1e51" + "\\u1e53" + "\\u1e55" + "\\u1e57" + "\\u1e59" + "\\u1e5b" + "\\u1e5d" + "\\u1e5f");
            sb.Append("\\u1e61" + "\\u1e63" + "\\u1e65" + "\\u1e67" + "\\u1e69" + "\\u1e6b" + "\\u1e6d" + "\\u1e6f");
            sb.Append("\\u1e71" + "\\u1e73" + "\\u1e75" + "\\u1e77" + "\\u1e79" + "\\u1e7b" + "\\u1e7d" + "\\u1e7f");
            sb.Append("\\u1e81" + "\\u1e83" + "\\u1e85" + "\\u1e87" + "\\u1e89" + "\\u1e8b" + "\\u1e8d" + "\\u1e8f");
            sb.Append("\\u1e91" + "\\u1e93" + "\\u1e95-\\u1e9b");
            sb.Append("\\u1ea1" + "\\u1ea3" + "\\u1ea5" + "\\u1ea7" + "\\u1ea9" + "\\u1eab" + "\\u1ead" + "\\u1eaf");
            sb.Append("\\u1eb1" + "\\u1eb3" + "\\u1eb5" + "\\u1eb7" + "\\u1eb9" + "\\u1ebb" + "\\u1ebd" + "\\u1ebf");
            sb.Append("\\u1ec1" + "\\u1ec3" + "\\u1ec5" + "\\u1ec7" + "\\u1ec9" + "\\u1ecb" + "\\u1ecd" + "\\u1ecf");
            sb.Append("\\u1ed1" + "\\u1ed3" + "\\u1ed5" + "\\u1ed7" + "\\u1ed9" + "\\u1edb" + "\\u1edd" + "\\u1edf");
            sb.Append("\\u1ee1" + "\\u1ee3" + "\\u1ee5" + "\\u1ee7" + "\\u1ee9" + "\\u1eeb" + "\\u1eed" + "\\u1eef");
            sb.Append("\\u1ef1" + "\\u1ef3" + "\\u1ef5" + "\\u1ef7" + "\\u1ef9");
            sb.Append("\\u1f00-\\u1f07");
            sb.Append("\\u1f10-\\u1f15");
            sb.Append("\\u1f20-\\u1f27");
            sb.Append("\\u1f30-\\u1f37");
            sb.Append("\\u1f40-\\u1f45");
            sb.Append("\\u1f50-\\u1f57");
            sb.Append("\\u1f60-\\u1f67");
            sb.Append("\\u1f70-\\u1f7d");
            sb.Append("\\u1f80-\\u1f87");
            sb.Append("\\u1f90-\\u1f97");
            sb.Append("\\u1fa0-\\u1fa7");
            sb.Append("\\u1fb0-\\u1fb4" + "\\u1fb6-\\u1fb7" + "\\u1fbe");
            sb.Append("\\u1fc2-\\u1fc4" + "\\u1fc6-\\u1fc7");
            sb.Append("\\u1fd0-\\u1fd3" + "\\u1fd6-\\u1fd7");
            sb.Append("\\u1fe0-\\u1fe7");
            sb.Append("\\u1ff2-\\u1ff4" + "\\u1ff6-\\u1ff7");
            sb.Append("\\u2071" + "\\u207f");
            sb.Append("\\u210a" + "\\u210e-\\u210f");
            sb.Append("\\u2113");
            sb.Append("\\u212f");
            sb.Append("\\u2134" + "\\u2139" + "\\u213d");
            sb.Append("\\u2146-\\u2149");
            sb.Append("\\ufb00-\\ufb06");
            sb.Append("\\ufb13-\\ufb17");
            sb.Append("\\uff41-\\uff5a");
            return sb.ToString();
        }

        public static string AllNumberDigitRanges()
        {
            StringBuilder sb = new StringBuilder(21);
            sb.Append("\\u0030-\\u0039");
            sb.Append("\\u0660-\\u0669");
            sb.Append("\\u06f0-\\u06f9");
            sb.Append("\\u0966-\\u096f");
            sb.Append("\\u09e6-\\u09ef");
            sb.Append("\\u0a66-\\u0a6f");
            sb.Append("\\u0ae6-\\u0aef");
            sb.Append("\\u0b66-\\u0b6f");
            sb.Append("\\u0be7-\\u0bef");
            sb.Append("\\u0c66-\\u0c6f");
            sb.Append("\\u0ce6-\\u0cef");
            sb.Append("\\u0d66-\\u0d6f");
            sb.Append("\\u0e50-\\u0e59");
            sb.Append("\\u0ed0-\\u0ed9");
            sb.Append("\\u0f20-\\u0f29");
            sb.Append("\\u1040-\\u1049");
            sb.Append("\\u1369-\\u1371");
            sb.Append("\\u17e0-\\u17e9");
            sb.Append("\\u1810-\\u1819");
            sb.Append("\\u1946-\\u194f");
            sb.Append("\\uff10-\\uff19");
            return sb.ToString();
        }

        public static string AllPunctuationsAndDash()
        {
            StringBuilder sb = new StringBuilder(11);
            sb.Append("\\u002d");
            sb.Append("\\u058a");
            sb.Append("\\u1806");
            sb.Append("\\u2010-\\u2015");
            sb.Append("\\u301c");
            sb.Append("\\u3030");
            sb.Append("\\u30a0");
            sb.Append("\\ufe31-\\ufe32");
            sb.Append("\\ufe58");
            sb.Append("\\ufe63");
            sb.Append("\\uff0d");
            return sb.ToString();
        }

        public static string AllUpperCaseLetterRanges()
        {
            StringBuilder sb = new StringBuilder(77);
            sb.Append("\\u0041-\\u005a");
            sb.Append("\\u00c0-\\u00d6");
            sb.Append("\\u00d8-\\u00de");
            sb.Append("\\u0100" + "\\u0102" + "\\u0104" + "\\u0106" + "\\u0108" + "\\u010a" + "\\u010c" + "\\u010e");
            sb.Append("\\u0110" + "\\u0112" + "\\u0114" + "\\u0116" + "\\u0118" + "\\u011a" + "\\u011c" + "\\u011e");
            sb.Append("\\u0120" + "\\u0122" + "\\u0124" + "\\u0126" + "\\u0128" + "\\u012a" + "\\u012c" + "\\u012e");
            sb.Append("\\u0130" + "\\u0132" + "\\u0134" + "\\u0136" + "\\u0139" + "\\u013b" + "\\u013d" + "\\u013f");
            sb.Append("\\u0141" + "\\u0143" + "\\u0145" + "\\u0147" + "\\u014a" + "\\u014c" + "\\u014e");
            sb.Append("\\u0150" + "\\u0152" + "\\u0154" + "\\u0156" + "\\u0158" + "\\u015a" + "\\u015c" + "\\u015e");
            sb.Append("\\u0160" + "\\u0162" + "\\u0164" + "\\u0166" + "\\u0168" + "\\u016a" + "\\u016c" + "\\u016e");
            sb.Append("\\u0170" + "\\u0172" + "\\u0174" + "\\u0176" + "\\u0178-\\u0179" + "\\u017b" + "\\u017d");
            sb.Append("\\u0181-\\u0182" + "\\u0184" + "\\u0186-\\u0187" + "\\u0189-\\u018b" + "\\u018e-\\u0191");
            sb.Append("\\u0193-\\u0194" + "\\u0196-\\u0198" + "\\u019c-\\u019d" + "\\u019f-\\u01a0");
            sb.Append("\\u01a2" + "\\u01a4" + "\\u01a6-\\u01a7" + "\\u01a9" + "\\u01ac" + "\\u01ae-\\u01af");
            sb.Append("\\u01b1-\\u01b3" + "\\u01b5" + "\\u01b7-\\u01b8" + "\\u01bc");
            sb.Append("\\u01c4" + "\\u01c7" + "\\u01ca" + "\\u01cd" + "\\u01cf");
            sb.Append("\\u01d1" + "\\u01d3" + "\\u01d5" + "\\u01d7" + "\\u01d9" + "\\u01db" + "\\u01de");
            sb.Append("\\u01e0" + "\\u01e2" + "\\u01e4" + "\\u01e6" + "\\u01e8" + "\\u01ea" + "\\u01ec" + "\\u01ee");
            sb.Append("\\u01f1" + "\\u01f4" + "\\u01f6-\\u01f8" + "\\u01fa" + "\\u01fc" + "\\u01fe");
            sb.Append("\\u0200" + "\\u0202" + "\\u0204" + "\\u0206" + "\\u0208" + "\\u020a" + "\\u020c" + "\\u020e");
            sb.Append("\\u0210" + "\\u0212" + "\\u0214" + "\\u0216" + "\\u0218" + "\\u021a" + "\\u021c" + "\\u021e");
            sb.Append("\\u0220" + "\\u0222" + "\\u0224" + "\\u0226" + "\\u0228" + "\\u022a" + "\\u022c" + "\\u022e");
            sb.Append("\\u0230" + "\\u0232");
            sb.Append("\\u0386" + "\\u0388-\\u038a" + "\\u038c" + "\\u038e-\\u038f");
            sb.Append("\\u0391-\\u03a1");
            sb.Append("\\u03a3-\\u03ab");
            sb.Append("\\u03d2-\\u03d4" + "\\u03d8" + "\\u03da" + "\\u03dc" + "\\u03de");
            sb.Append("\\u03e0" + "\\u03e2" + "\\u03e4" + "\\u03e6" + "\\u03e8" + "\\u03ea" + "\\u03ec" + "\\u03ee");
            sb.Append("\\u03f4" + "\\u03f7" + "\\u03f9-\\u03fa");
            sb.Append("\\u0400-\\u042f");
            sb.Append("\\u0460" + "\\u0462" + "\\u0464" + "\\u0466" + "\\u0468" + "\\u046a" + "\\u046c" + "\\u046e");
            sb.Append("\\u0470" + "\\u0472" + "\\u0474" + "\\u0476" + "\\u0478" + "\\u047a" + "\\u047c" + "\\u047e");
            sb.Append("\\u0480" + "\\u048a" + "\\u048c" + "\\u048e");
            sb.Append("\\u0490" + "\\u0492" + "\\u0494" + "\\u0496" + "\\u0498" + "\\u049a" + "\\u049c" + "\\u049e");
            sb.Append("\\u04a0" + "\\u04a2" + "\\u04a4" + "\\u04a6" + "\\u04a8" + "\\u04aa" + "\\u04ac" + "\\u04ae");
            sb.Append("\\u04b0" + "\\u04b2" + "\\u04b4" + "\\u04b6" + "\\u04b8" + "\\u04ba" + "\\u04bc" + "\\u04be");
            sb.Append("\\u04c0-\\u04c1" + "\\u04c3" + "\\u04c5" + "\\u04c7" + "\\u04c9" + "\\u04cb" + "\\u04cd");
            sb.Append("\\u04d0" + "\\u04d2" + "\\u04d4" + "\\u04d6" + "\\u04d8" + "\\u04da" + "\\u04dc" + "\\u04de");
            sb.Append("\\u04e0" + "\\u04e2" + "\\u04e4" + "\\u04e6" + "\\u04e8" + "\\u04ea" + "\\u04ec" + "\\u04ee");
            sb.Append("\\u04f0" + "\\u04f2" + "\\u04f4" + "\\u04f8");
            sb.Append("\\u0500" + "\\u0502" + "\\u0504" + "\\u0506" + "\\u0508" + "\\u050a" + "\\u050c" + "\\u050e");
            sb.Append("\\u0531-\\u0556");
            sb.Append("\\u10a0-\\u10c5");
            sb.Append("\\u1e00" + "\\u1e02" + "\\u1e04" + "\\u1e06" + "\\u1e08" + "\\u1e0a" + "\\u1e0c" + "\\u1e0e");
            sb.Append("\\u1e10" + "\\u1e12" + "\\u1e14" + "\\u1e16" + "\\u1e18" + "\\u1e1a" + "\\u1e1c" + "\\u1e1e");
            sb.Append("\\u1e20" + "\\u1e22" + "\\u1e24" + "\\u1e26" + "\\u1e28" + "\\u1e2a" + "\\u1e2c" + "\\u1e2e");
            sb.Append("\\u1e30" + "\\u1e32" + "\\u1e34" + "\\u1e36" + "\\u1e38" + "\\u1e3a" + "\\u1e3c" + "\\u1e3e");
            sb.Append("\\u1e40" + "\\u1e42" + "\\u1e44" + "\\u1e46" + "\\u1e48" + "\\u1e4a" + "\\u1e4c" + "\\u1e4e");
            sb.Append("\\u1e50" + "\\u1e52" + "\\u1e54" + "\\u1e56" + "\\u1e58" + "\\u1e5a" + "\\u1e5c" + "\\u1e5e");
            sb.Append("\\u1e60" + "\\u1e62" + "\\u1e64" + "\\u1e66" + "\\u1e68" + "\\u1e6a" + "\\u1e6c" + "\\u1e6e");
            sb.Append("\\u1e70" + "\\u1e72" + "\\u1e74" + "\\u1e76" + "\\u1e78" + "\\u1e7a" + "\\u1e7c" + "\\u1e7e");
            sb.Append("\\u1e80" + "\\u1e82" + "\\u1e84" + "\\u1e86" + "\\u1e88" + "\\u1e8a" + "\\u1e8c" + "\\u1e8e");
            sb.Append("\\u1e90" + "\\u1e92" + "\\u1e94");
            sb.Append("\\u1ea0" + "\\u1ea2" + "\\u1ea4" + "\\u1ea6" + "\\u1ea8" + "\\u1eaa" + "\\u1eac" + "\\u1eae");
            sb.Append("\\u1eb0" + "\\u1eb2" + "\\u1eb4" + "\\u1eb6" + "\\u1eb8" + "\\u1eba" + "\\u1ebc" + "\\u1ebe");
            sb.Append("\\u1ec0" + "\\u1ec2" + "\\u1ec4" + "\\u1ec6" + "\\u1ec8" + "\\u1eca" + "\\u1ecc" + "\\u1ece");
            sb.Append("\\u1ed0" + "\\u1ed2" + "\\u1ed4" + "\\u1ed6" + "\\u1ed8" + "\\u1eda" + "\\u1edc" + "\\u1ede");
            sb.Append("\\u1ee0" + "\\u1ee2" + "\\u1ee4" + "\\u1ee6" + "\\u1ee8" + "\\u1eea" + "\\u1eec" + "\\u1eee");
            sb.Append("\\u1ef0" + "\\u1ef2" + "\\u1ef4" + "\\u1ef6" + "\\u1ef8");
            sb.Append("\\u1f08-\\u1f0f");
            sb.Append("\\u1f18-\\u1f1d");
            sb.Append("\\u1f28-\\u1f2f");
            sb.Append("\\u1f38-\\u1f3f");
            sb.Append("\\u1f48-\\u1f4d");
            sb.Append("\\u1f59" + "\\u1f5b" + "\\u1f5d" + "\\u1f5f");
            sb.Append("\\u1f68-\\u1f6f");
            sb.Append("\\u1fb8-\\u1fbb");
            sb.Append("\\u1fc8-\\u1fcb");
            sb.Append("\\u1fd8-\\u1fdb");
            sb.Append("\\u1fe8-\\u1fec");
            sb.Append("\\u1ff8-\\u1ffb");
            sb.Append("\\u2102" + "\\u2107" + "\\u210b-\\u210d");
            sb.Append("\\u2110-\\u2112" + "\\u2115" + "\\u2119-\\u211d");
            sb.Append("\\u2124" + "\\u2126" + "\\u2128" + "\\u212a-\\u212d");
            sb.Append("\\u2130-\\u2131" + "\\u2133" + "\\u213e-\\u213f");
            sb.Append("\\u2145");
            sb.Append("\\uff21-\\uff3a");
            return sb.ToString();
        }

        public static string LetterOther()
        {
            StringBuilder sb = new StringBuilder(145);
            sb.Append("\\u01bb");
            sb.Append("\\u01c0-\\u01c3");
            sb.Append("\\u05d0-\\u05ea");
            sb.Append("\\u05f0-\\u05f2");
            sb.Append("\\u0621-\\u063a");
            sb.Append("\\u0641-\\u064a");
            sb.Append("\\u066e-\\u066f");
            sb.Append("\\u0671-\\u06d3");
            sb.Append("\\u06d5");
            sb.Append("\\u06ee-\\u06ef");
            sb.Append("\\u06fa-\\u06fc" + "\\u06ff");
            sb.Append("\\u0710" + "\\u0712-\\u072f");
            sb.Append("\\u074d-\\u074f");
            sb.Append("\\u0780-\\u07a5");
            sb.Append("\\u07b1");
            sb.Append("\\u0904-\\u0939");
            sb.Append("\\u093d");
            sb.Append("\\u0950" + "\\u0958-\\u0961");
            sb.Append("\\u0985-\\u098c" + "\\u098f-\\u0990");
            sb.Append("\\u0993-\\u09a8");
            sb.Append("\\u09aa-\\u09b0");
            sb.Append("\\u09b2" + "\\u09b6-\\u09b9" + "\\u09bd");
            sb.Append("\\u09dc-\\u09dd" + "\\u09df-\\u09e1");
            sb.Append("\\u09f0-\\u09f1");
            sb.Append("\\u0a05-\\u0a0a" + "\\u0a0f-\\u0a10");
            sb.Append("\\u0a13-\\u0a28");
            sb.Append("\\u0a2a-\\u0a30");
            sb.Append("\\u0a32-\\u0a33" + "\\u0a35-\\u0a36" + "\\u0a38-\\u0a39");
            sb.Append("\\u0a59-\\u0a5c" + "\\u0a5e");
            sb.Append("\\u0a72-\\u0a74");
            sb.Append("\\u0a85-\\u0a8d" + "\\u0a8f-\\u0a91");
            sb.Append("\\u0a93-\\u0aa8");
            sb.Append("\\u0aaa-\\u0ab0");
            sb.Append("\\u0ab2-\\u0ab3" + "\\u0ab5-\\u0ab9" + "\\u0abd");
            sb.Append("\\u0ad0");
            sb.Append("\\u0ae0-\\u0ae1");
            sb.Append("\\u0b05-\\u0b0c" + "\\u0b0f-\\u0b10");
            sb.Append("\\u0b13-\\u0b28");
            sb.Append("\\u0b2a-\\u0b30");
            sb.Append("\\u0b32-\\u0b33" + "\\u0b35-\\u0b39" + "\\u0b3d");
            sb.Append("\\u0b5c-\\u0b5d" + "\\u0b5f-\\u0b61");
            sb.Append("\\u0b71");
            sb.Append("\\u0b83" + "\\u0b85-\\u0b8a" + "\\u0b8e-\\u0b90");
            sb.Append("\\u0b92-\\u0b95" + "\\u0b99-\\u0b9a" + "\\u0b9c" + "\\u0b9e-\\u0b9f");
            sb.Append("\\u0ba3-\\u0ba4" + "\\u0ba8-\\u0baa" + "\\u0bae-\\u0bb5");
            sb.Append("\\u0bb7-\\u0bb9");
            sb.Append("\\u0c05-\\u0c0c" + "\\u0c0e-\\u0c10");
            sb.Append("\\u0c12-\\u0c28");
            sb.Append("\\u0c2a-\\u0c33");
            sb.Append("\\u0c35-\\u0c39");
            sb.Append("\\u0c60-\\u0c61");
            sb.Append("\\u0c85-\\u0c8c" + "\\u0c8e-\\u0c90");
            sb.Append("\\u0c92-\\u0ca8");
            sb.Append("\\u0caa-\\u0cb3");
            sb.Append("\\u0cb5-\\u0cb9" + "\\u0cbd");
            sb.Append("\\u0cde");
            sb.Append("\\u0ce0-\\u0ce1");
            sb.Append("\\u0d05-\\u0d0c" + "\\u0d0e-\\u0d10");
            sb.Append("\\u0d12-\\u0d28");
            sb.Append("\\u0d2a-\\u0d39");
            sb.Append("\\u0d60-\\u0d61");
            sb.Append("\\u0d85-\\u0d96");
            sb.Append("\\u0d9a-\\u0db1");
            sb.Append("\\u0db3-\\u0dbb" + "\\u0dbd");
            sb.Append("\\u0dc0-\\u0dc6");
            sb.Append("\\u0e01-\\u0e30");
            sb.Append("\\u0e32-\\u0e33");
            sb.Append("\\u0e40-\\u0e45");
            sb.Append("\\u0e81-\\u0e82" + "\\u0e84" + "\\u0e87-\\u0e88" + "\\u0e8a" + "\\u0e8d");
            sb.Append("\\u0e94-\\u0e97" + "\\u0e99-\\u0e9f");
            sb.Append("\\u0ea1-\\u0ea3" + "\\u0ea5" + "\\u0ea7" + "\\u0eaa-\\u0eab" + "\\u0ead-\\u0eb0");
            sb.Append("\\u0eb2-\\u0eb3" + "\\u0ebd");
            sb.Append("\\u0ec0-\\u0ec4");
            sb.Append("\\u0edc-\\u0edd");
            sb.Append("\\u0f00");
            sb.Append("\\u0f40-\\u0f47" + "\\u0f49-\\u0f6a");
            sb.Append("\\u0f88-\\u0f8b");
            sb.Append("\\u1000-\\u1021");
            sb.Append("\\u1023-\\u1027" + "\\u1029-\\u102a");
            sb.Append("\\u1050-\\u1055");
            sb.Append("\\u10d0-\\u10f8");
            sb.Append("\\u1100-\\u1159");
            sb.Append("\\u115f-\\u11a2");
            sb.Append("\\u11a8-\\u11f9");
            sb.Append("\\u1200-\\u1206" + "\\u1208-\\u1246");
            sb.Append("\\u1248" + "\\u124a-\\u124d");
            sb.Append("\\u1250-\\u1256" + "\\u1258" + "\\u125a-\\u125d");
            sb.Append("\\u1260-\\u1286");
            sb.Append("\\u1288" + "\\u128a-\\u128d");
            sb.Append("\\u1290-\\u12ae");
            sb.Append("\\u12b0" + "\\u12b2-\\u12b5" + "\\u12b8-\\u12be");
            sb.Append("\\u12c0" + "\\u12c2-\\u12c5" + "\\u12c8-\\u12ce");
            sb.Append("\\u12d0-\\u12d6" + "\\u12d8-\\u12ee");
            sb.Append("\\u12f0-\\u130e");
            sb.Append("\\u1310" + "\\u1312-\\u1315" + "\\u1318-\\u131e");
            sb.Append("\\u1320-\\u1346");
            sb.Append("\\u1348-\\u135a");
            sb.Append("\\u13a0-\\u13f4");
            sb.Append("\\u1401-\\u166c");
            sb.Append("\\u166f-\\u1676");
            sb.Append("\\u1681-\\u169a");
            sb.Append("\\u16a0-\\u16ea");
            sb.Append("\\u1700-\\u170c" + "\\u170e-\\u1711");
            sb.Append("\\u1720-\\u1731");
            sb.Append("\\u1740-\\u1751");
            sb.Append("\\u1760-\\u176c" + "\\u176e-\\u1770");
            sb.Append("\\u1780-\\u17b3");
            sb.Append("\\u17dc");
            sb.Append("\\u1820-\\u1842");
            sb.Append("\\u1844-\\u1877");
            sb.Append("\\u1880-\\u18a8");
            sb.Append("\\u1900-\\u191c");
            sb.Append("\\u1950-\\u196d");
            sb.Append("\\u2135-\\u2138");
            sb.Append("\\u3006");
            sb.Append("\\u303c");
            sb.Append("\\u3041-\\u3096");
            sb.Append("\\u309f");
            sb.Append("\\u30a1-\\u30fa");
            sb.Append("\\u30ff");
            sb.Append("\\u3105-\\u312c");
            sb.Append("\\u3131-\\u318e");
            sb.Append("\\u31a0-\\u31b7");
            sb.Append("\\u31f0-\\u31ff");
            sb.Append("\\u3400");
            sb.Append("\\u4db5");
            sb.Append("\\u4e00");
            sb.Append("\\u9fa5");
            sb.Append("\\ua000-\\ua48c");
            sb.Append("\\uac00");
            sb.Append("\\ud7a3");
            sb.Append("\\ufb1d" + "\\ufb1f-\\ufb28");
            sb.Append("\\ufb2a-\\ufb36");
            sb.Append("\\ufb38-\\ufb3c" + "\\ufb3e");
            sb.Append("\\ufb40-\\ufb41" + "\\ufb43-\\ufb44" + "\\ufb46-\\ufbb1");
            sb.Append("\\ufbd3-\\ufd3d");
            sb.Append("\\ufd50-\\ufd8f");
            sb.Append("\\ufd92-\\ufdc7");
            sb.Append("\\ufdf0-\\ufdfb");
            sb.Append("\\ufe70-\\ufe74" + "\\ufe76-\\ufefc");
            sb.Append("\\uff66-\\uff6f");
            sb.Append("\\uff71-\\uff9d");
            sb.Append("\\uffa0-\\uffbe");
            sb.Append("\\uffc2-\\uffc7" + "\\uffca-\\uffcf");
            sb.Append("\\uffd2-\\uffd7" + "\\uffda-\\uffdc");
            return sb.ToString();
        }

        public static string PunctuationsOthers()
        {
            StringBuilder sb = new StringBuilder(49);
            sb.Append("\\u0021-\\u0023" + "\\u0025-\\u0027" + "\\u002a" + "\\u002c" + "\\u002e-\\u002f");
            sb.Append("\\u003a-\\u003b" + "\\u003f-\\u0040");
            sb.Append("\\u005c");
            sb.Append("\\u00a1");
            sb.Append("\\u00b7" + "\\u00bf");
            sb.Append("\\u037e");
            sb.Append("\\u0387");
            sb.Append("\\u055a-\\u055f");
            sb.Append("\\u0589");
            sb.Append("\\u05be");
            sb.Append("\\u05c0" + "\\u05c3");
            sb.Append("\\u05f3-\\u05f4");
            sb.Append("\\u060c-\\u060d");
            sb.Append("\\u061b" + "\\u061f");
            sb.Append("\\u066a-\\u066d");
            sb.Append("\\u06d4");
            sb.Append("\\u0700-\\u070d");
            sb.Append("\\u0964-\\u0965");
            sb.Append("\\u0970");
            sb.Append("\\u0df4");
            sb.Append("\\u0e4f");
            sb.Append("\\u0e5a-\\u0e5b");
            sb.Append("\\u0f04-\\u0f12");
            sb.Append("\\u0f85");
            sb.Append("\\u104a-\\u104f");
            sb.Append("\\u10fb");
            sb.Append("\\u1361-\\u1368");
            sb.Append("\\u166d-\\u166e");
            sb.Append("\\u16eb-\\u16ed");
            sb.Append("\\u1735-\\u1736");
            sb.Append("\\u17d4-\\u17d6" + "\\u17d8-\\u17da");
            sb.Append("\\u1800-\\u1805" + "\\u1807-\\u180a");
            sb.Append("\\u1944-\\u1945");
            sb.Append("\\u2016-\\u2017");
            sb.Append("\\u2020-\\u2027");
            sb.Append("\\u2030-\\u2038" + "\\u203b-\\u203e");
            sb.Append("\\u2041-\\u2043" + "\\u2047-\\u2051");
            sb.Append("\\u2053" + "\\u2057");
            sb.Append("\\u23b6");
            sb.Append("\\u3001-\\u3003");
            sb.Append("\\u303d");
            sb.Append("\\ufe30");
            sb.Append("\\ufe45-\\ufe46" + "\\ufe49-\\ufe4c");
            sb.Append("\\ufe50-\\ufe52" + "\\ufe54-\\ufe57" + "\\ufe5f-\\ufe61");
            sb.Append("\\ufe68" + "\\ufe6a-\\ufe6b");
            sb.Append("\\uff01-\\uff03" + "\\uff05-\\uff07" + "\\uff0a" + "\\uff0c" + "\\uff0e-\\uff0f");
            sb.Append("\\uff1a-\\uff1b" + "\\uff1f-\\uff20");
            sb.Append("\\uff3c");
            sb.Append("\\uff61" + "\\uff64");
            return sb.ToString();
        }

        #endregion Methods
    }
}